package com.baizhi.util;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Random;

import org.apache.log4j.chainsaw.Main;

/**
 * @author 王雪洋
 * @Time 2017年4月29日 下午1:59:12
 * @disc: 实现对输入的明文数据进行加密通用工具包
 */
public class MD5Utils {
	/*
	 * 加密盐核心算法将一个任意字符转换为加密字符  32位  16进制
	 */
	public static String generateMD5Code(String password){
		//拼接字符串工具
		StringBuilder sb = null;
		try {
			//创建MessageDigest参数为算法的名称
			MessageDigest messageDigest = MessageDigest.getInstance("MD5");
			//通过md5对象加密
			byte[] digest = messageDigest.digest(password.getBytes());
			sb =  new StringBuilder();
			for (byte b : digest) {
				int l = b & 0xff;//进行十六进制的与运算
				if(l<16)
					sb.append("0");
				//     ?
				sb.append(Integer.toHexString(l));
			}
			
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
		return sb.toString();
	}
	/*
	 * 生成随机任意长度为a的附加盐
	 */
	public static String createRandomChar(int a){
		Random random = new Random();
		//拼接字符串工具
		StringBuffer sb = new StringBuffer();
		String str = "123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
		char[] c = str.toCharArray();
		for (int i = 0; i < a; i++) {
			sb.append(c[random.nextInt(c.length)]);
		}
		return sb.toString();
	}
	public static void main(String[] args) {
		System.out.println(generateMD5Code("123456"+"abcdef"));
	}
}
